Graphical patterns may be used to convey information. A pattern may be printed or otherwise affixed to an item such as a document or an article of manufacture, for example. The pattern can then be used for various control and monitoring functions by using equipment to read the pattern. One such pattern is a barcode, and common barcodes include one-dimensional barcodes, meaning the barcode pattern varies in only one direction (e.g., the horizontal direction) and are fixed or constant in other dimensions (e.g., the vertical dimension). One-dimensional barcodes are used in applications that do not require a great deal of information to be conveyed by the barcode. An example of such low-information applications is bar coding of food, clothing, and other products sold at retail. One-dimensional barcodes are rendered by machines, and are read by machines. The (typically) alternating thicker and thinner vertical bars that comprise the one-dimensional barcode are generally not susceptible to interpretation by a human.
Two-dimensional barcodes, sometimes called matrix codes, are known that can be used to provide more information than one-dimensional barcodes. Two-dimensional barcodes use patterns that vary in both the horizontal and vertical directions. An exemplary two-dimensional “QR (quick-response) code” barcode system is described in U.S. Pat. No. 5,726,435. This system uses cells in a two-dimensional matrix with positioning symbols that allow the QR code to be read in multiple orientations.
Matrix codes such as the QR code, the Data Matrix, Shotcode, mCode and others serve a variety of purposes. For example, a product may be labeled with a matrix code enabling a customer bearing a smartphone to read the code using the phone, and thereby to retrieve networked information concerning the product and related information. Matrix codes storing addresses and URLs may appear in magazines, on signs, buses, business cards, or other objects about which users might need information. Users possessing a smart phone equipped with a camera and with the correct software can scan the image of the code in order to display text, contact information, connect to a wireless network, open a web page in the phone's browser, or perform a variety of other tasks depending on the data embedded in the matrix code. Matrix codes can be used to display text to the user, to add a vCard contact to the user's device, to open a URI, or to compose a text message or email. Users can also generate and print their own matrix codes for others to scan and use by visiting one of several free matrix code generating websites. However, such user-generated matrix codes, as well as commercially or institutionally generated matrix codes, still suffer from several drawbacks. For example, it is difficult to ensure the security of information communicated with matrix codes.